跳到主要内容

delve调试工具

go-delve/delve Golang 的断点调试

安装环境

go install github.com/go-delve/delve/cmd/dlv@latest

直接运行的方式

直接在服务器启动:

dlv debug --headless --listen=:2345 --api-version=2 --accept-multiclient

然后直接在 Goland 里面点击 Remote Debug 模式(不需要手动编译,直接点击 debug 模式就行了)

独立进程运行的方式

# -N 禁止编译器优化
# -l 禁止内联
go build -o hello -gcflags=all="-N -l" main.go
dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./hello

如果程序需要启动参数, 则在后面添加

dlv --listen=:2345 --headless=true --api-version=2 --accept-multiclient exec ./demo -- -c=/config
# 等同于
./demo -c=/config

注意:它这样不是马上启动的,而是先挂起一个监听,只有本地的 Goland 点击 Debug 模式之后才执行这个应用

通过进程 PID 的方式

# 获取服务器端运行的应用的 pid
ps aux | grep xxx
# 启动服务端应用的监听,命令如下:
dlv attach PID --headless --api-version=2 --log --listen=:2345

如果报错则尝试:

# 先切换 root 用户
su root
echo 0 > /proc/sys/kernel/yama/ptrace_scope

References